package negocio;

import controladoresJPA.OperarConsumoJpaController;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Inject;
import javax.inject.Named;
import modelo.Consumible;
import modelo.Ingreso;
import modelo.OperarConsumo;
import modelo.OperarConsumoConsumible;
import modelo.OperarConsumoIngreso;
import modelo.Usuario;
import pojos.ConsumoVO;
import pojos.PagoVO;

@Named("operarConsumoBI")
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class OperarConsumoBI {
    @Resource
    private EJBContext eJBContext;
    @Inject
    private ConsumibleBI consumibleBI;
    @Inject
    private IngresoBI ingresoBI;
    
    public void crear(List<ConsumoVO> consumos, List<PagoVO> pagos, Usuario usuario) throws Exception{
        try{
            OperarConsumo operarConsumo = new OperarConsumo();
            operarConsumo.setIdUsuario(usuario);
            operarConsumo.setFechaConsumo(new Date());
            List<OperarConsumoConsumible> operarConsumoConsumible = new ArrayList<OperarConsumoConsumible>();
            for(ConsumoVO oCC : consumos){
                OperarConsumoConsumible consumo = new OperarConsumoConsumible();
                Consumible consumible = new Consumible();
                consumible = consumibleBI.buscarConsumiblesPorIdConsumible(oCC.getIdConsumible());
                consumo.setIdConsumible(consumible);
                consumo.setMonto(BigDecimal.valueOf(oCC.getMonto()));
                operarConsumoConsumible.add(consumo);
            }
            List<OperarConsumoIngreso> operarConsumoIngresos = new ArrayList<OperarConsumoIngreso>();
            for(PagoVO pv : pagos){
                OperarConsumoIngreso pago = new OperarConsumoIngreso();
                Ingreso ingreso = new Ingreso();
                ingreso = ingresoBI.buscarIngresoPorIdIngreso(pv.getIdIngreso());
                pago.setIdIngreso(ingreso);
                pago.setMonto(BigDecimal.valueOf(pv.getMonto()));
                operarConsumoIngresos.add(pago); 
            }
        }catch(Exception e){
            e.printStackTrace();
            throw new Exception("Error al operar consumo");
        }
        OperarConsumoJpaController operarConsumoJpaController = new OperarConsumoJpaController(eJBContext.getUserTransaction(), 
        EFServicio.getEmf());
            
            //operarConsumoJpaController.altaOperarConsumo();
    }
}
